#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>

//struct ListNode {
//    int val;
//    struct ListNode* next;
//};
//
////struct ListNode* FindKthToTail(struct ListNode* pListHead, int k) {
////    struct ListNode* new = NULL;
////    struct ListNode* cur = pListHead;
////
////    while (cur)
////    {
////        struct ListNode* tem = cur->next;
////        cur->next = new;
////        new = cur;
////        cur = tem;
////    }
////    while (--k)
////    {
////        new = new->next;
////    }
////    return new;
////}
//
//struct ListNode* FindKthToTail(struct ListNode* pListHead, int k) {
//    struct ListNode* slow = pListHead, * fast = pListHead;
//    while (k--)
//    {
//        if (fast == NULL)
//        {
//            return NULL;
//        }
//        fast = fast->next;
//    }
//    while (fast)
//    {
//        slow = slow->next;
//        fast = fast->next;
//    }
//    return slow;
//}
//int main()
//{
//    struct ListNode* n1 = (struct ListNode*)malloc(sizeof(struct ListNode));
//    struct ListNode* n2= (struct ListNode*)malloc(sizeof(struct ListNode));
//    struct ListNode* n3 = (struct ListNode*)malloc(sizeof(struct ListNode));
//    struct ListNode* n4 = (struct ListNode*)malloc(sizeof(struct ListNode));
//    struct ListNode* n5 = (struct ListNode*)malloc(sizeof(struct ListNode));
//    n1->val = 1;
//    n2->val = 2;
//    n3->val = 3;
//    n4->val = 4;
//    n5->val = 5;
//    n1->next = n2;
//    n2->next = n3;
//    n3->next = n4;
//    n4->next = n5;
//    n5->next = NULL;
//    struct ListNode* p = FindKthToTail(n1, 3);
//    printf("%d\n", p->val);
//    return 0;
//}